#!/bin/sh
# PCP QA Test No. 316
# exercise pmParseInterval
#
# Copyright (c) 1995-2002 Silicon Graphics, Inc.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard filters
. ./common.product
. ./common.filter
. ./common.check

status=1	# failure is the default!
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15

_args()
{
    _a=`echo "$1" | sed -e 's/ /\\\\ /g'`
    shift
    for s
    do
	arg="$arg $_a$s"
	S=`echo "$s" | tr '[a-z]' '[A-Z]'`
	arg="$arg $_a$S"
    done
}

do_nsec()
{
    arg=""
    for a
    do
	_args "$a" nanosecond nanoseconds nsec nsecs
    done
    # sed needed for arithmetic precision and rounding differences between machines
    #
    eval src/parsehighresinterval $arg \
    | sed \
	-e 's/0.122999999 sec/0.123000000 sec/' \
	-e 's/0.007999999 sec/0.008000000 sec/'
}

do_usec()
{
    arg=""
    for a
    do
	_args "$a" microsecond microseconds usec usecs
    done
    # sed needed for arithmetic precision and rounding differences between machines
    #
    eval src/parsehighresinterval $arg \
    | sed \
	-e 's/0.122999999 sec/0.123000000 sec/' \
	-e 's/0.007999999 sec/0.008000000 sec/'
}

do_msec()
{
    arg=""
    for a
    do
	_args "$a" millisecond milliseconds msec msecs
    done
    # sed needed for arithmetic precision and rounding differences between machines
    #
    eval src/parseinterval $arg \
    | sed \
	-e 's/0.122999 sec/0.123000 sec/' \
	-e 's/0.009122 sec/0.009123 sec/' \
	-e 's/0.007999 sec/0.008000 sec/'
}

do_sec()
{
    arg=""
    for a
    do
	_args "$a" second seconds sec secs s
    done
    eval src/parseinterval $arg
    for a
    do
	src/parseinterval "$a"
    done
}

do_min()
{
    arg=""
    for a
    do
	_args "$a" minute minutes min mins m
    done
    eval src/parseinterval $arg
}

do_hour()
{
    arg=""
    for a
    do
	_args "$a" hour hours hr hrs h
    done
    eval src/parseinterval $arg
}

do_day()
{
    arg=""
    for a
    do
	_args "$a" day d
    done
    eval src/parseinterval $arg
}

# real QA test starts here

echo
echo "nanoseconds ..."
do_nsec 123 45.67 8. "   9.123   "

echo
echo "microseconds ..."
do_usec 123 45.67 8. "   9.123   "

echo
echo "milliseconds ..."
do_msec 123 45.67 8. "   9.123   "

echo
echo "seconds ..."
do_sec 123 45.67 8. "   9.123   "

echo 
echo "minutes ..."
do_min 60 1.25 2. "   0.16666667  "

echo
echo "hours ..."
do_hour 2 1.5 10. "   0.333333333333  "

echo
echo "days ..."
do_day 1 1.5 10. "   0.083333333333  "

echo
echo "some hybrids ..."
src/parseinterval 1min30sec 1d1h1m1s1msec "1.5 hr 10 min 15 sec" \
| sed \
    -e 's/90061.000999 sec/90061.001000 sec/'
src/parsehighresinterval "1 2 3 4 5 6 7 8 9 10" 55seconds

echo
echo "some errors ..."
src/parseinterval 123+sec 123.456.789min "4minutes 30secoonds" sec "123sec min" \
| sed \
    -e 's/170.796000/170.795999/'

# success, all done
status=0
exit
